package com.efast.dmom.mgmt.dao.mes;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import com.efast.dmom.mgmt.bean.mes.MesPlanScheduleInfo;
import com.efast.dmom.mgmt.bean.mes.MesWorkCalendar;
import com.efast.dmom.mgmt.bean.mes.TmShift;
import com.efast.dmom.mgmt.bean.mes.TmShiftDetail;
import com.efast.dmom.mgmt.entity.master.TmBasWorkshop;
import com.efast.dmom.mgmt.utils.Assist;

public interface MesWorkCalendarDao {
	/**
	 * 通过Assist辅助类进行查询操作，返回一个MesWorkCalendar集合
	 * */
	List<MesWorkCalendar> selectMesWorkCalendar(Assist assist);
	
	/**
	 * 对MesWorkCalendar进行批量新增操作
	 * */
	void insertAllMesWorkCalendar(List<MesWorkCalendar> list);
	
	/**
	 * 对MesWorkCalendar进行批量更新操作通过id
	 * */
	void updateAllMesWorkCalendar(List<MesWorkCalendar> list);
	
	/**
	 * 对MesWorkCalendar进行批量删除操作通过id
	 * */
	void deleteAllMesWorkCalendar(List<Integer> list);
	
	
	/**
	 * 获取车间的集合
	 * */
	List<TmBasWorkshop> getAllworkShop(@Param("plantNo")String plantNo);
	
	/**
	 * 更新车间下制定日期的班次内的节拍数据
	 * */
	void updateMesWorkCalendarByShiftId(MesWorkCalendar mesWorkCalendar);
	
	/**
	 * 删除指定车间下的制定日期下的班次
	 * */
	void deleteShiftByCanlendar(@Param("calendarDate")String calendarDate, @Param("shiftId")Integer shiftIds,@Param("calendarId")Integer calendarId);
	
	/**
	 * 通过日历时间批量新增对应的班次
	 * */
	void addShiftByWorkCanlendars(Map<String, Object> map);
	
	/**
	 * 通过班次的id查询对应的班次详情信息
	 * */
	List<TmShiftDetail> selectShiftDetailByShiftId(MesWorkCalendar mesWorkCalendar);
	
	/**
	 * 更新日历中当前日历的状态（Y：工作日N：休息日）
	 * */
	void updateIfwork(Map<String,Object> map);
	
	
	/**
	 * 通过日历信息查询对应的班次信息
	 * */
	List<TmShift> selectCalendarShift(@Param("list")List<MesWorkCalendar> list);
	
	/**
	 * 通过日历关联表信息的id查询对应的班次信息
	 * */
	List<TmShift> selectCalendarByRelationId(@Param("list")List<MesWorkCalendar> list);
	
	
	/**
	 * 通过某车间下的日期查询日历数据
	 * */
	List<MesWorkCalendar> selectCalendardateByCalendarList(Map<String,Object> map);
	
	/**
	 * 新增一条日历记录
	 * */
	void addWorkCanlendar(MesWorkCalendar mesWorkCalendar);
	
	/**
	 * 批量删除车间下某个日历下的所有信息
	 * */
	Integer deleteWorkCanlendar(Map<String,Object> map);
	
	/**
	 * 通过车间和日历集合查询所有的日历数据
	 * */
	List<MesWorkCalendar>selectCalendarsBycalendarAndWorkshop(Map<String,Object> map);
	
	/**
	 * 删除工作日历信息通过车间和日历时间
	 * */
	void deleteMesCalendarByShopAndcalendar(Map<String,Object> map);
	
	/**
	 * 批量在日历表中插入数据
	 * */
	Integer addcalendarDatas (Map<String,Object> map);

	/**
	 * 查询日历信息通过车间和日历时间
	 * */
	List<MesWorkCalendar> selectCalendarsByWorkshop(Map<String,Object> map);
	
	@Select("select plant_name_c as plantNameC,plant_no as plantNo from tm_bas_plant")
	List<Map<String,String>> queryAllPlant();
	
	/**
	 * 查询日历悬浮数据
	 * */
	List<MesPlanScheduleInfo> selectCalendarSuspendDate(Map<String,Object> map);
	/**
	 * 查询日历关联表中的产能
	 * */
	List<MesWorkCalendar> selectCalendarRelationSumPlaninput(Map<String,Object> map);
}
